package MapDemo;

import java.util.HashMap;
import java.util.Map;

/**
 * java.util.Map 查找表
 * Map体现的样子是一个多行两列的表格，其中左列称为key，右列称为value
 * Map总是根据key来获取对应的value
 * Map要求key不允许重复（key的equals方法作为判断重复的依据）
 *
 * 常实现的类
 * java.util.HashMap, 散列表，当今查询速度最快的数据结构。
 */
public class mapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<String, Integer>();
        /*
        V put (K k,V v)
        将一组键值存入Map，因为Map要求不允许有重复的key，因此若是使用已有的key存放
        value那么就是替换value操作，此时方法返回值为被替换的value，否则返回值为null
         */
        Integer v = map.put("语文",99);
        /*
        若value是包装类，那么接受时避免用基本类型，否则返回值为null时
        自动拆箱会引发空指针异常
        下面代码会被编译器自动拆箱为：
         int v = map.put("语文",99).intValue();
         */
        System.out.println(v);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",95);
        map.put("地理",99);
        System.out.println(map);
        int p = map.put("语文",55);
        System.out.println(p);
        System.out.println(map);
        /*
        v get(Object key)
        根据给定的key获取相应的value，如果给定的key不存在否则返回值为null
         */
        v = map.get("数学");
        System.out.println(v);
        v = map.get("体育");
        System.out.println(v);
        /*
        v remove(Object key)
        删除当前给定Map中给定的key对应的键值，返回值为这个key对应的value
         */
        v = map.remove("化学");
        System.out.println(v);
        System.out.println(map.size());
       // map.clear();
        //判断Map是否包含给定的key或value
        boolean ck = map.containsKey("语文");
        System.out.println(ck);
        ck = map.containsValue("55");
        System.out.println(ck);
        //遍历Map
    }
}
